package com.fu.shop.service;

import com.fu.core.common.BusinessException;
import com.fu.core.pojo.Order;
import com.fu.core.pojo.OrderDetailsVo;
import com.fu.core.service.BaseService;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @author 付龙江
 * @date 2022/2/5 11:29
 */
public interface OrderService extends BaseService<Order> {

    /**
     * 查询订单信息
     * @param from 开始时间
     * @param to 结束时间
     * @param successStatus 成功状态
     * @param notPay 未支付
     * @param distribution 配送总
     * @param failedStatus 已取消
     * @param name 订单编号和用户名
     * @return 返回订单集合
     */
    PageInfo<Map<String,Object>> selectOrderList(String from, String to, Integer successStatus, Integer notPay,
                                                 Integer distribution, Integer failedStatus, String name,
                                                 Integer page, Integer size);

    /**
     *
     * @return 导出订单简略信息
     */
    List<Map<String,Object>> uploadOrderList();

    /**
     * 订单详情
     * @param orderId 订单编号
     * @return 返回详情信息
     * @throws BusinessException 自定义异常
     */
    OrderDetailsVo selectOrderDetails(Integer orderId) throws BusinessException;

    /**
     * 取消订单
     * 先判断订单是否完成
     * 完成了的订单无法取消
     * @param orderId 点单编号
     * @throws Exception 异常处理
     */
    void cancelOrder(Integer orderId)throws Exception;
}
